# 项目部署脚本
# update方法：参数：springboot（后端）、system（系统前台）、admin（系统后台）
update() {
    local app=$app
    if [ "$app" == "admin" ]; then
      # ./start.sh update springboot，-e 参数目的是为了让Linux解释转义字符
      echo -e "Start update system-vue admin"
      # 1. 删除原本的 admin 文件夹
      rm -rf system-vue/admin
      # 2. 移动当前位置的 admin 文件夹到 ./system-vue中
      mv admin ./system-vue
      # 3. 重启 Nginx 容器
      docker restart nginx
      echo -e "Blog management system updated successfully"
    elif [ "$app" == "springboot" ]; then
      # ./start.sh update springboot
      echo -e "Start update system-springboot"
      # 1. 删除原本服务器上的jar包
      rm -rf system-springboot/system-start.jar
      echo -e "Complete jar package deletion and move"
      # 2. 移动当前位置 (/usr/local/project/system) 的jar包到 ./system-springboot 目录中
      mv system-start.jar ./system-springboot
      # 3. 停止并删除当前正在运行的system容器
      docker rm -f system
      # 4. 删除当前的system镜像
      docker rmi system:"$old_version"
      echo -e "Complete stopping the system container and deleting the system image"
      # 5. 根据Dockerfile构建新的系统镜像
      docker build -f ./system-springboot/Dockerfile -t system:"$version" .
      echo -e "Completing the construction of a new system image: system:$version"
      # 6. 根据新的镜像运行system容器
      docker run --name system -p 8090:8090 -v /usr/local/project/system/system-springboot/upload/:/usr/local/project/system/system-springboot/upload --restart="always" -d system:"$version"
      echo -e "Backend project update successfully"
    else
      echo "请输入正确的更新内容，[ system(系统前台), admin(系统管理), springboot(后端服务) ]"
    fi
}

# 获取脚本的参数
action=$1
app=$2
# 定义当前系统版本
version=1.0.0
# 旧版系统版本
old_version=1.0.0

# 判断是否提供了足够的参数
if [ -z "$action" ] || [ -z "$app" ]; then
  echo "Error: Insufficient arguments $0 <action> <app>"
  exit 1
fi

# 根据提供的参数执行相应的操作
if [ "$action" == "update" ]; then
  # 调用定义的函数
  update "$app"
else
  echo "Unknown action: $action"
  exit 1
fi